
// 这个文件，不要用，不知道谁建的，等理清楚再用


import axios from 'axios'
import merge from 'lodash/merge'
import qs from 'qs'
import {
  // Loading
} from 'element-ui'

// 超时时间
axios.defaults.timeout = 60000
// 跨域请求，允许保存cookie
axios.defaults.withCredentials = true
axios.defaults.headers = {'Content-Type': 'application/json; charset=utf-8'}
// axios.defaults.headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=utf-8' // 这句会导致map, list传给服务端无法接收 wxy 20210425
// 非生产环境 && 开启代理, 接口前缀统一使用[/api]前缀做代理拦截!
const BASE_URL = process.env.VUE_APP_SERVER_URL
// 对面暴露的基础请求路径
axios.BASE_URL = BASE_URL

/**
 * 请求拦截
 */
let loading
axios.interceptors.request.use(config => {
  // let showLoading = false
  // if (config.loading === true) {
  //   showLoading = true
  // }
  // if (showLoading) {
  //   loading = Loading.service({
  //     text: config.loadingText || 'Loading...',
  //     spinner: 'el-icon-loading',
  //     background: 'rgba(0, 0, 0, 0.7)'
  //   })
  // }
  // 请求头带上token
  // config.headers.token = Vue.cookie.get('token')
  // 请求地址处理
  config.url = BASE_URL + config.url
  const type = config.method
  const defaults = {}
  const arrayFormat = config.headers.arrayFormat || 'indices'
  if (type === 'post' && config.headers['Content-Type'] === 'application/x-www-form-urlencoded; charset=utf-8') {
    // post请求参数处理
    config.data = qs.stringify(config.data, { allowDots: true, arrayFormat: arrayFormat })
  } else if (type === 'get') {
    // get请求参数处理
    config.params = qs.stringify(config.params, { allowDots: true, arrayFormat: arrayFormat })
    config.params = qs.parse(config.params)
    config.params = merge(defaults, config.params)
  }
  return config
}, error => {
  return Promise.reject(error)
})

/**
 * 响应拦截
 */
axios.interceptors.response.use(response => {
  if (loading) {
    loading.close()
  }
  return response
}, error => {
  if (loading) {
    loading.close()
  }
  var result = {
    data: {
      code: 999,
      msg: '未知错误',
      success: false
    }
  }
  if (!error || !error.response) {
    result.data.code = 999
    result.data.msg = '未知错误'
  } else  if (error.response.status === 404) { // 路径找不到
    result.data.code = error.response.status
    result.data.msg = '404，路径找不到' + ':' + error.response.data.path
  } else if (error.response.status === 504) {
    result.data.code = error.response.status
    result.data.msg = '网络连接错误' + ':' + error.response.data
  } else {
    result.data.code = error.response.status
    result.data.msg = error.response.data.msg || error.response.data.exception || error.response.data || error.response || error
  }
  return result
})

export default axios
